#include <bits/stdc++.h>
using namespace std;

typedef unsigned long long ull; // 定义无符号长整型别名
const int MAX_N = 300001;       // 最大数字数量
const int MAX_BITS = 64;        // 最大位数（64位）

int n;                          // 数字个数
ull num[MAX_N], base[MAX_BITS]; // 存储输入数字和线性基

// 构建线性基的函数
void getBase() {
  for (int i = 1; i <= n; i++) {              // 遍历每个数字
    for (int j = MAX_BITS - 1; j >= 0; j--) { // 从最高位开始检查
      if (num[i] & (1ull << j)) {             // 如果当前数字的第j位是1
        if (!base[j]) {                       // 如果线性基中该位为空
          base[j] = num[i];                   // 将当前数字存入线性基
          break;                              // 结束当前数字的处理
        } else {
          num[i] ^= base[j]; // 否则，与线性基中的数字异或，消除该位
        }
      }
    }
  }
}

int main() {
  scanf("%d", &n); // 读取数字个数
  for (int i = 1; i <= n; i++)
    scanf("%llu", &num[i]); // 读取每个数字

  getBase(); // 构建线性基

  ull ans = 0;                              // 初始化结果为0
  for (int i = MAX_BITS - 1; i >= 0; i--) { // 从最高位开始
    if ((ans ^ base[i]) > ans)              // 如果异或后结果更大
      ans ^= base[i];                       // 更新结果
  }
  printf("%llu\n", ans); // 输出最大异或和

  return 0;
}